''' 
认识函数
'''

num1 = int(input("请输入长方形的长："))
num2 = int(input("请输入长方形的宽："))

print("长方形的面积是：%d" % (num1 * num2))

""" 
语法
  def函数名(参数):
    函数体
  
  def关键字定义一个函数，def关键字后面跟着函数名称和参数，真正的函数体在下面一行，而且必须有缩进。
  参数必须同类型
  传递参数时，按照函数定义的参数数量和位置进行传递，称为位置参数。
"""

# 函数功能：打印Hello
def sayHello():
  # 打印Hello
  print("Hello")

# 调用sayHello函数
sayHello()

""" 
函数功能：计算正方形的周长
函数参数：正方形的边长，类型是数字
"""

def calc(length):
  print("正方形的周长是 %d" % (4 * length))

length = int(input("请输入正方形的边长"))
calc(length)

""" 
函数功能：计算长方形的面积
函数参数：长方形的长和宽，类型是数字
"""

def calcArea(width, height):
  print("长方形的面积是 %d" % (width * height))

width = int(input("请输入长方形的长"))
height = int(input("请输入长方形的宽"))
calcArea(width, height)

""" 
  关键字参数
  关键字参数在参数传递时可以和函数定义的位置和数量不一致。
  通过 key = value 的形式指定 参数名 = 参数值 来传递参数

  指定了默认值的参数必须在没有指定默认值的参数后面

  任意数量的参数
"""

calcArea(height = height, width = width)

''' 
收集班上学生的姓名、性别、年龄、电话号码
函数参数：姓名、性别、年龄、电话号码
'''

def collect(name, phone, gender = '女', age = 10):   # 指定了默认值的参数必须在没有指定默认值的参数后面
  print("姓名：%s，性别：%s，年龄：%d岁，电话号码：%s" % (name, gender, age, phone))

collect("珍妮", "18893098888")
collect("珍妮", "18893090088", age=10)
collect("珍妮", "18893668888", "女")
collect("珍妮", "18893093388", "女", 12)

''' 
找出不定数量的数字中的奇数
'''

def oddNum(*nums):
  print("奇数有：")
  for num in nums:
    if num % 2 != 0:
      print(num)

oddNum(34,9,93,32,65)

def oddNum2(*nums):
  print("oddNum2()函数接收的是：%s" % str(nums))
  print("oddNum2()函数接收的参数类型是：%s" % type(nums))

oddNum2(99,34,5,6,88,23)

''' 
函数功能：介绍好朋友
函数参数：三个参数

        name是我的名字
        num是好朋友的数量
        names是好朋友的名字
        hobbys是好朋友的爱好
'''

def goodFriends(name, num, *names, **hobbys):   # * 多个参数
  print("我的名字叫 %s" % name)
  print("我有 %d个好朋友" % num)

  for name in names:
    print("他们的名字分别是 %s" % name)

  for hobby in hobbys:
    print("他们的爱好分别是 %s" % hobby)

goodFriends("李", 2, "艳芳", "张铭", 艳芳="看书", 张铭="游戏")

''' 
函数的返回值
'''

''' 
函数功能：计算长方形的面积
函数参数：长方形的长和宽，类型是数字
函数返回值：长方形的面积，类型是数字
'''

def calcArea2(length, width):
  return length * width

length = int(input("请输入长方形的长"))
width = int(input("请输入长方形的宽"))

area = calcArea2(length, width)
print("长方形的面积是： %d" % area)